package com.blockmeta.bbs.businesslibrary.base.fragment;


/**
 * 适用于好友列表和圈子列表，每次都会加载数据，但不重复，从其他页面返回也会加载数据，可以用于从数据库加载数据每次都保持最新
 * 减少在多个不同的地方发送event进行刷新导致的逻辑复杂
 */
public abstract class AlwayResumeFragment extends BaseFragment {
    protected boolean mIsVisibleHint;

    @Override
    public void initView() {
        initializeLayout();
    }


    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        this.mIsVisibleHint = isVisibleToUser;
        if (mIsVisibleHint)
        {
            // 相当于Fragment的onResume
            if (getView() != null)
            {
                everyDoResume();
            }
        }
        else
        {
            // 相当于Fragment的onPause
            if (getView() != null)
            {
                everyDoPause();
            }
        }
    }


    @Override
    public void onResume() {
        super.onResume();
        if(mIsVisibleHint)
        {
            everyDoResume();
        }
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        if(mIsVisibleHint)
        {
            everyDoPause();
        }
        mIsVisibleHint = false;
    }



    /**
     * 初始化控件
     */
    protected abstract void initializeLayout();

    protected abstract void everyDoResume();

    protected abstract void everyDoPause();
}
